#ifndef __COMMON_LINKAGE_H__
#define __COMMON_LINKAGE_H__


#define GLOBAL(name) \
  .globl name;       \
  name:

#ifndef ENTRY
#define ENTRY(name) \
  .globl name;      \
  name:
#endif  // ENTRY

#ifndef END
#define END(name) \
  .size name, .-name
#endif  // END

#ifndef ENDPROC
#define ENDPROC(name) \
  .type name, @function \
  END(name)
#endif  // ENDPROC

/*
 * 这条规则告诉编译器，不要试图通过寄存器来传递参数
 * 所有的参数都将通过栈来传递
 */
#define asmlinkage __attribute__((regparm(0)))
#define fastcall __attribute__((regparm(3)))

#define __init __attribute__((__section__(".init.text32")))
#define __init_data __attribute__((__section__(".init.data32")))


#endif  // __COMMON_LINKAGE_H__
